package com.su.util;

import org.commonmark.Extension;
import org.commonmark.node.Link;
import org.commonmark.node.Node;
import org.commonmark.parser.Parser;
import org.commonmark.renderer.html.AttributeProvider;
import org.commonmark.renderer.html.AttributeProviderContext;
import org.commonmark.renderer.html.AttributeProviderFactory;
import org.commonmark.renderer.html.HtmlRenderer;

import java.util.*;

public class MarkdownUtils {

    /**
     * markdown 转换成 HTML
     * @param markdown
     * @return
     */
    public static String markdownToHTML(String markdown){
        Parser parser = Parser.builder().build();
        Node document = parser.parse(markdown);
        HtmlRenderer renderer = HtmlRenderer.builder().build();
        return renderer.render(document);
    }

    /**
     * 增加扩展【标题锚点，表格生成】
     * @param markdown
     * @return
     */
//    public static String markdownToHTMLExtensions(String markdown){
//        Set<Extension> headingAnchorExtensions = Collections.singleton(HeadingAnchorExtension.create());
//
//        List<Extension> tableExtension = Arrays.asList(TablesExtension.create());
//
//        Parser parser = Parser.builder()
//                .extensions(tableExtension)
//                .build();
//        Node document = parser.parse(markdown);
//        HtmlRenderer renderer = HtmlRenderer.builder()
//                .extensions(headingAnchorExtensions)
//                .extensions(tableExtension)
//                .attributeProviderFactory(new AttributeProviderFactory() {
//                    @Override
//                    public AttributeProvider create(AttributeProviderContext attributeProviderContext) {
//                        return new CustomAttributeProvider();
//                    }
//                }).build();
//        return renderer.render(document);
//
//    }

//    static class CustomAttributeProvider implements AttributeProvider{
//        @Override
//        public void setAttributes(Node node, String s, Map<String, String> map) {
//            if(node instanceof Link){
//                map.put("target","_blank");
//            }
//            if(node instanceof TableBlock){
//                map.put("class","ui celled table");
//            }
//        }
//    }
}
